package com.easylinkin.linkappapi.openapi.controller;

import com.easylinkin.linkappapi.annotation.CommonOperateLogAnnotate;
import com.easylinkin.linkappapi.openapi.common.CommonResult;
import com.easylinkin.linkappapi.operatelog.constant.LogConstant.LogModule;
import com.easylinkin.linkappapi.security.context.LinkappUserContextProducer;
import com.easylinkin.linkappapi.space.entity.LinkappSpace;
import com.easylinkin.linkappapi.space.service.LinkappSpaceService;
import java.util.Set;
import javax.annotation.Resource;

import io.swagger.annotations.ApiOperation;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/openApi/space")
public class SpaceOpenApiController {

    @Resource
    private LinkappSpaceService linkappSpaceService;
    @Resource
    private LinkappUserContextProducer linkappUserContextProducer;

    /**
     * 空间管理 查询项目下所有的空间信息
     */
    @ApiOperation("查询项目下所有的空间信息")
    @GetMapping("/getLinkappSpaces")
    public CommonResult getLinkappSpaces() {
        LinkappSpace linkappSpace = new LinkappSpace();
        linkappSpace.setTenantId(linkappUserContextProducer.getNotNullCurrent().getTenantId());
        return CommonResult.success(linkappSpaceService.selectLinkappSpaceList(linkappSpace));
    }

    /**
     * 空间管理 查询单条空间信息
     *
     * @param id 空间id
     */
    @ApiOperation("查询单条空间信息")
    @GetMapping("/getLinkappSpace")
    public CommonResult getLinkappSpace(@RequestParam("id") String id) {
        Assert.hasLength(id, "参数id为空");
        LinkappSpace linkappSpace = new LinkappSpace();
        linkappSpace.setId(id);
        linkappSpace.setTenantId(linkappUserContextProducer.getNotNullCurrent().getTenantId());
        return CommonResult.success(linkappSpaceService.selectLinkappSpace(linkappSpace));
    }

    /**
     * 空间管理 新增空间信息
     *
     * @param linkappSpace 空间vo
     */
    @ApiOperation("批量新增空间")
    @PostMapping("/addLinkappSpace")
    @CommonOperateLogAnnotate(module = LogModule.SPACE_OPEN_API, desc = "批量新增空间")
    public CommonResult addLinkappSpaces(@RequestBody LinkappSpace linkappSpace) {
        return CommonResult.success(linkappSpaceService.addLinkappSpace(linkappSpace));
    }

    /**
     * 空间管理 修改空间
     *
     * @param linkappSpace 空间vo
     */
    @ApiOperation("修改空间")
    @PostMapping("/updateLinkappSpace")
    @CommonOperateLogAnnotate(module = LogModule.SPACE_OPEN_API, desc = "修改空间")
    public CommonResult updateLinkappSpace(@RequestBody LinkappSpace linkappSpace) {
        return CommonResult.success(linkappSpaceService.updateLinkappSpace(linkappSpace));
    }

    /**
     * 空间管理 删除空间
     *
     * @param ids 空间id集合
     */
    @ApiOperation("批量删除空间")
    @PostMapping("/deleteLinkappSpaceList")
    @CommonOperateLogAnnotate(module = LogModule.SPACE_OPEN_API, desc = "批量删除空间")
    public CommonResult deleteLinkappSpaceList(@RequestBody Set<String> ids) {
        return CommonResult.success(linkappSpaceService.deleteLinkappSpaceList(ids));
    }


}
